package com.bird.file.charstream;


import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * @author sijunqiang
 * @data 2021/7/31 17:28
 * @description: 文件字符流 专门读取文件到内存 以字符为单位读取
 */
public class FileReader {

    //FileReader(File file)： 创建一个新的 FileReader ，给定要读取的File对象。
    //FileReader(String fileName)： 创建一个新的 FileReader ，给定要读取的文件的名称。

    // 创建文件读取流
    public static void main1(String[] args) throws FileNotFoundException {
        // 创建文件读取流对象,打开流对象通道
        File file = new File("b.txt");
        java.io.FileReader fr = new java.io.FileReader(file);

        // 使用文件名称创建流文件流对象 打开流通道
        java.io.FileReader fileReader = new java.io.FileReader("b.txt");
    }

    // 读取字符数据 每次读取一个字符
    public static void main2(String[] args) throws IOException {

        // 创建文件读取流的对象 打开流通道
        java.io.FileReader fr = new java.io.FileReader("b.txt");

        //定义变量 保存数据
        int b;

        // read 每次只能从文件流中读取一个字符,如果等于-1 那么就说明读取完了
        while ((b = fr.read()) != -1) {
            System.out.print((char) b);
        }
        fr.close();
    }


    //读取字符数据 使用字符数组读取 每次读取的长度是字符数组的长度
    public static void main(String[] args) throws IOException {
        java.io.FileReader fr = new java.io.FileReader("b.txt");

        int len;

        // 将从字符读取流中读取的数据暂时保存到字符数组中
        char[] chars = new char[6];
        // 每次以字符数组的长度读取读取字符数据 保存到字符中
        while ((len = fr.read(chars)) != -1) {
            System.out.println(new String(chars, 0, len));
        }
        fr.close();
    }
}
